热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

可能会|租户_Volcano成Spark默认batch调度器

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Volcano成Spark默认batch调度器相关的知识,希望对你有一定的参考价值。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Volcano成Spark默认batch调度器相关的知识,希望对你有一定的参考价值。




摘要:对于Spark用户而言,借助Volcano提供的批量调度、细粒度资源管理等功能,可以更便捷的从Hadoop迁移到Kubernetes,同时大幅提升大规模数据分析业务的性能。

2022年6月16日,Apache Spark 3.3版本正式发布,其中《Support Customized Kubernetes Schedulers》作为Spark 3.3版本的重点(Highlight)特性,其关键能力是从框架层面支持定制化的Kubernetes度器,并且将Volcano作为Spark on Kubernetes的默认batch调度器。这也是Apache Spark社区官方支持Volcano的第一个版本。对于Spark用户而言,借助Volcano提供的批量调度、细粒度资源管理等功能,可以更便捷的从Hadoop迁移到Kubernetes,同时大幅提升大规模数据分析业务的性能。


华为牵头发起,主流厂商协作

该特性由华为牵头发起,由来自华为、Apple、Cloudera、Netflix、Databricks等公司的开发者共同协作完成。通过在Apache Spark支持自定义调度能力,允许用户插件化使用各种第三方自定义调度。


Spark + Volcano:更完善的调度能力

Spark的资源管理平台正在向Kubernetes演进,Apache Spark现有架构下,Job的单主、多从节点的分离调度,导致了Spark driver节点资源死锁问题,尤其是在资源紧张的情况下,会经常出现此类问题。同时,由于原生Kubernetes的调度能力受限,也无法完成Job粒度诸如队列调度、公平调度、资源预留等功能。

Volcano作为CNCF社区首个云原生批量计算,于2019年6月在上海KubeCon正式开源,并在2020年4月成为CNCF官方项目。2022年4月,Volcano正式晋级为CNCF孵化项目。Volcano社区开源以来,在人工智能、大数据、基因测序、转码、渲染等海量数据计算和分析场景得到快速应用,并构建起完善的上下游生态,目前腾讯、爱奇艺、小红书、蘑菇街、唯品会、鹏程实验室、锐天投资等企业均将Volcano应用于生产环境。

Spark 官方支持Volcano将会进一步加速大数据平台迁移到Kubernetes的进程,帮助Spark用户应对以下常见的批量调度场景。


常见调度场景:


作业级的公平调度 (Job-based Fair-share)

当运行多个弹性作业(如流媒体分析)时,需要公平地为每个作业分配资源,以满足多个作业竞争附加资源时的SLA/QoS要求。在最坏的情况下,单个作业可能会启动大量的pod资源利用率低,从而阻止其他作业由于资源不足而无法运行。为了避免分配过小(例如,为每个作业启动一个Pod),Volcano允许弹性作业定义应该启动的Pod的最小可用数量。 超过指定的最小可用量的任何pod都将公平地与其他作业共享集群资源。


队列 (Queue)

队列还广泛用于共享弹性工作负载和批处理工作负载的资源。队列的主要目的是:


  • 在不同的“租户”或资源池之间共享资源,例如将每一个部门映射到一个队列,实现多个部门通过队列的权重,动态共享集群的资源。
  • 为不同的“租户”或资源池支持不同的调度策略或算法,如FIFO、Fairness、Priority等

队列被实现为集群范围的CRD,和namespace实现了解耦。这允许将在不同namespace中创建的作业放置在一个共享队列中。队列还提供了min和max,min是队列的最小保障资源,任何时刻该队列有紧急任务提上来都保证有min资源可用,max是队列资源使用上限。min和max之间的资源如果闲置,允许共享给其他队列的任务来提升整体的资源利用率。


面向用户的, 跨队列的公平调度 (Namespace-based fair-share Cross Queue)

在队列中,每个作业在调度循环期间有几乎相等的调度机会,这意味着拥有更多作业的用户有更大的机会安排他们的作业,这对其他用户不公平。 例如,有一个队列包含少量资源,有10个pod属于UserA,1000个pod属于UserB。在这种情况下,UserA的pod被绑定到节点的概率较小。

为了平衡同一队列中用户之间的资源使用,需要更细粒度的策略。考虑到Kubernetes中的多用户模型,使用名称空间来区分不同的用户, 每个命名空间都将配置一个权重,作为控制其资源使用优先级的手段。


抢占 (Preemption & Reclaim)

通过公平分享来支持借贷模型,一些作业/队列在空闲时会过度使用资源。但是,如果有任何进一步的资源请求,资源“所有者”将“收回”。 资源可以在队列或作业之间共享:回收用于队列之间的资源平衡,抢占用于作业之间的资源平衡。


最小资源预留(minimal resource reservation)

运行拥有多个任务角色的作业时(如Spark)时,Spark driver pod会先创建并运行,然后请求Kube-apiserver创建Spark executor pod,在资源紧张或高并发的场景,时常会出现大量作业提交导致所有可用资源被Spark driver pod耗尽,Spark executor无法获取资源,最终所有Spark作业无法正常运行。为解决此问题,用户为Spark driver pod 和 executor pod创建专有节点进行静态划分,而这带来了资源碎片、利用率低下的问题。Volcano提供的minimal resource reservation 允许为每个Spark作业预留资源,防止Spark executor无法获取资源而导致的死锁问题,相比于静态划分的作法,性能提升30%+。


预留与回填 (Reservation & Backfill)

当一个请求大量资源的“巨大”作业提交给Kubernetes时,当有许多小作业在管道中时,该作业可能会饿死,并最终根据当前的调度策略/算法被杀死。为了避免饥饿, 应该有条件地为作业保留资源,例如超时。当资源被保留时,它们可能会处于空闲和未使用状态。为了提高资源利用率,调度程序将有条件地将“较小”作业回填到那些保留资源中。 保留和回填都是根据插件的反馈触发的:Volcano供了几个回调接口,供开发人员或用户决定哪些作业应该被填充或保留。


未来发展

随着场景的日益丰富,Volcano也在不断的添加新的算法,同时,相应的接口也在不断的完善,方便用户扩展并自定义相应的算法。另一方面,社区也在持续的扩大技术版图支持新的场景如跨云跨集群调度、混部、FinOps、智能弹性调度、细粒度资源管理等。

近期我们还会对Spark 3.3中Volcano 带来的批量调度能力进行详细技术解读,敬请期待。添加Volcano小助手k8s2222,进入Volcano社区交流群,大咖在侧,定期分享。

Spark 3.3 release notes: https://spark.apache.org/releases/spark-release-3-3-0.html

Volcano官网:https://volcano.sh/zh/docs/

Github : https://github.com/volcano-sh/volcano


点击关注,第一时间了解华为云新鲜技术~

 


推荐阅读
  • 基于,docker,快速,部署,多,需求,spark ... [详细]
  • 本文介绍了响应式页面的概念和实现方式,包括针对不同终端制作特定页面和制作一个页面适应不同终端的显示。分析了两种实现方式的优缺点,提出了选择方案的建议。同时,对于响应式页面的需求和背景进行了讨论,解释了为什么需要响应式页面。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • PHP组合工具以及开发所需的工具
    本文介绍了PHP开发中常用的组合工具和开发所需的工具。对于数据分析软件,包括Excel、hihidata、SPSS、SAS、MARLAB、Eview以及各种BI与报表工具等。同时还介绍了PHP开发所需的PHP MySQL Apache集成环境,包括推荐的AppServ等版本。 ... [详细]
  • 本文总结了初学者在使用dubbo设计架构过程中遇到的问题,并提供了相应的解决方法。问题包括传输字节流限制、分布式事务、序列化、多点部署、zk端口冲突、服务失败请求3次机制以及启动时检查。通过解决这些问题,初学者能够更好地理解和应用dubbo设计架构。 ... [详细]
  • Exceptioninthreadmainorg.apache.hadoop.security.AccessControlException:Permissiondenied: ... [详细]
  • SparkOnYarn在YARN上启动Spark应用有两种模式。在cluster模式下,Spark驱动器(driver)在YARNApp ... [详细]
  • 大数据的明天将驶向何方?
    http:www.infoq.comcnarticleswhere-will-big-data--tomorrow-sail-to大数据的明天将驶向何方?作者 36Kr 发布于20 ... [详细]
  • Flume 开源分布式日志收集系统
    为什么80%的码农都做不了架构师?Flume--开源分布式日志收集系统Flume是Cloudera提供的一个高可用的、高可靠的开源分布式海量日志收集系统 ... [详细]
  • Firefox火狐浏览器关闭到http://detectportal.firefox.com的流量问题解决办法
    本文介绍了使用Firefox火狐浏览器时出现关闭到http://detectportal.firefox.com的流量问题,并提供了解决办法。问题的本质是因为火狐默认开启了Captive portal技术,当连接需要认证的WiFi时,火狐会跳出认证界面。通过修改about:config中的network.captive-portal-service.en的值为false,可以解决该问题。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 拥抱Android Design Support Library新变化(导航视图、悬浮ActionBar)
    转载请注明明桑AndroidAndroid5.0Loollipop作为Android最重要的版本之一,为我们带来了全新的界面风格和设计语言。看起来很受欢迎࿰ ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • FeatureRequestIsyourfeaturerequestrelatedtoaproblem?Please ... [详细]
  • 本文介绍了使用Spark实现低配版高斯朴素贝叶斯模型的原因和原理。随着数据量的增大,单机上运行高斯朴素贝叶斯模型会变得很慢,因此考虑使用Spark来加速运行。然而,Spark的MLlib并没有实现高斯朴素贝叶斯模型,因此需要自己动手实现。文章还介绍了朴素贝叶斯的原理和公式,并对具有多个特征和类别的模型进行了讨论。最后,作者总结了实现低配版高斯朴素贝叶斯模型的步骤。 ... [详细]
author-avatar
小孩的内心世界
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有